#include <stdio.h>
#include <stdlib.h>
#include "tdc.h"
#include "errores.h"

/**
@function
@name crearTDC
@author Pablo
@param doc: TDC *
@param archPrograma: char *
@return int
*/
int crearTDC(TDC* doc, char* archPrograma){
    int error;
    printf("Archivo a procesar: %s\n", archPrograma);
    error = TDC_Crear(doc,archPrograma);
    if (error == -1){
        popError(ERROR_ABRIR);
    }
    return error;
}

/**
@function
@name DocumentarTDC
@author Pablo
@param tdc: TDC *
@param archDoc: char *
@return int
*/
int DocumentarTDC (TDC* tdc, char* archDoc){
    int error;
    printf("Procesando archivo, espere por favor...\n");
    error= TDC_Documentar (tdc,archDoc);
    if (error == RES_OK)
        printf("El archivo ha sido procesado.\nLa documentacion se encuentra en el archivo: %s\n", archDoc);
    else
        popError(ERROR_DOCUMENTAR);

    return error;
}

/**
@function
@name CerrarTDC
@author Pablo
@param doc: TDC *
@return int
*/
int CerrarTDC(TDC* doc){
    int error;
    error = TDC_Cerrar(doc);
    if (error == -1){
        popError(ERROR_CERRAR);
    }
	return error;
}


/**
@function
@name main
@author Pablo
@param argc: int
@param argv: char **
@return int
*/
int main(int argc, char* argv[]){
	TDC doc;
	int error;
	switch(argc)
	{
	    case 0:
	    case 1:
                popError(FALTA_PARAMETRO_REQUERIDO);
                break;
		case 2:
				error=crearTDC(&doc, argv[1]);
				if (error == 0)
				{
					error=DocumentarTDC (&doc,strcat(argv[1],".txt"));
							if(error == 0){
                                error=CerrarTDC(&doc);
							}
				}
				break;
		case 3:
                error=crearTDC(&doc, argv[1]);
                if (error == 0){

               error=DocumentarTDC (&doc,argv[2]);
                        if(error == 0){
                            error=CerrarTDC(&doc);
						}
                }
                break;

        default:
                popError(NUMERO_ARGUMENTOS_INVALIDO);
	}

	return popError(OK);
}/* Fin del Programa */
